home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / boot / netBoot.new / systypes.h < prev    next >
C/C++ Source or Header  |  1990-12-19  |  4KB  |  144 lines

  1. /*
  2.  * Copyright (c) 1982 Regents of the University of California.
  3.  * All rights reserved.  The Berkeley software License Agreement
  4.  * specifies the terms and conditions for redistribution.
  5.  *
  6.  *    @(#)types.h    7.3 (Berkeley) 6/20/87
  7.  */
  8.  
  9. #ifndef _TYPES
  10. #define    _TYPES
  11. /*
  12.  * Basic system types and major/minor device constructing/busting macros.
  13.  *
  14.  * Note that these are also defined as unix_major and unix_minor to
  15.  * avoid conflict with the major and minor fields in the Fs_FileID struct.
  16.  * That structure is defined in <fs.h>, which undefines the major() and
  17.  * minor() macros if you aren't using an ANSI C compiler like gcc.
  18.  */
  19. #ifndef KERNEL
  20. /* major part of a device */
  21. #define    major(x)    ((int)(((unsigned)(x)>>8)&0377))
  22. #endif
  23. #define unix_major(x)    ((int)(((unsigned)(x)>>8)&0377))
  24.  
  25. #ifndef KERNEL
  26. /* minor part of a device */
  27. #define    minor(x)    ((int)((x)&0377))
  28. #endif
  29. #define    unix_minor(x)    ((int)((x)&0377))
  30.  
  31. /* make a device number */
  32. #define    makedev(x,y)    ((dev_t)(((x)<<8) | (y)))
  33.  
  34. typedef    unsigned char    u_char;
  35. typedef    unsigned short    u_short;
  36. typedef    unsigned int    u_int;
  37. typedef    unsigned long    u_long;
  38. typedef    unsigned short    ushort;        /* sys III compat */
  39.  
  40. #if defined(vax) || defined(tahoe)
  41. typedef    struct    _physadr { int r[1]; } *physadr;
  42. typedef    struct    label_t    {
  43.     int    val[14];
  44. } label_t;
  45. #endif
  46. #if defined(mc68000)
  47. typedef    struct    _physadr { short r[1]; } *physadr;
  48. typedef    struct    label_t    {
  49.     int    val[13];
  50. } label_t;
  51. #endif
  52.  
  53. /* 
  54.  * 64-bit integers.  (I would prefer having two longs, "hi" and "lo",
  55.  * rather than a 2-word array.  Unfortunately, that would be
  56.  * incompatible with the BSD definition.)  
  57.  */
  58.  
  59. typedef struct _quad {long val[2]; } quad;
  60. typedef    struct    _uquad {unsigned long val[2]; } u_quad;
  61.  
  62. /* 
  63.  * Some useful operations for dealing with unsigned quads (e.g.,
  64.  * counters).  Word 0 is assumed to be least-significant.
  65.  * 
  66.  * This list is far from complete, but we might as well 
  67.  * put the things we need in a central place.
  68.  */
  69.  
  70. #define UQUAD_PLUS_ULONG(uquadVal, ulongVal) \
  71.     {unsigned long tmp; \
  72.      tmp = (uquadVal).val[0] + (ulongVal); \
  73.      if (tmp < (uquadVal).val[0] && tmp < (ulongVal)) \
  74.      (uquadVal).val[1]++; \
  75.      (uquadVal).val[0] = tmp; \
  76.     }
  77.  
  78. /* 
  79.  * Note the order of operations.  This is so that a u_quad can be 
  80.  * added to itself.
  81.  */
  82. #define UQUAD_PLUS_UQUAD(uq1, uq2) \
  83.     {unsigned long tmp; \
  84.      tmp = (uq1).val[0] + (uq2).val[0]; \
  85.      (uq1).val[1] += (uq2).val[1]; \
  86.      if (tmp < (uq1).val[0] && tmp < (uq2).val[0]) \
  87.      (uq1).val[1]++; \
  88.      (uq1).val[0] = tmp; \
  89.     }
  90.  
  91. /* 
  92.  * Evaluates to non-zero if the given quad (or u_quad) is zero.
  93.  */
  94. #define QUAD_IS_ZERO(q) \
  95.     ((q).val[0] == 0 && (q).val[1] == 0)
  96.  
  97. typedef    long    daddr_t;
  98. typedef    char *    caddr_t;
  99. typedef    long *    qaddr_t;    /* should be typedef quad * qaddr_t; */
  100. typedef    u_long    ino_t;
  101. typedef    long    swblk_t;
  102. #ifndef _SIZE_T
  103. #define _SIZE_T
  104. typedef    int    size_t;
  105. #endif
  106. #ifndef _TIME_T
  107. #define _TIME_T
  108. typedef    long    time_t;
  109. typedef    long    clock_t;
  110. #endif
  111. typedef    short    dev_t;
  112. typedef    long    off_t;
  113. typedef    short    uid_t;
  114. typedef    short    gid_t;
  115. typedef long    key_t;        /* sys V compat */
  116.  
  117. #define    NBBY    8        /* number of bits in a byte */
  118. /*
  119.  * Select uses bit masks of file descriptors in longs.
  120.  * These macros manipulate such bit fields (the filesystem macros use chars).
  121.  * FD_SETSIZE may be defined by the user, but the default here
  122.  * should be >= NOFILE (param.h).
  123.  */
  124. #ifndef    FD_SETSIZE
  125. #define    FD_SETSIZE    256
  126. #endif
  127.  
  128. typedef long    fd_mask;
  129. #define NFDBITS    (sizeof(fd_mask) * NBBY)    /* bits per mask */
  130. #ifndef howmany
  131. #define    howmany(x, y)    (((x)+((y)-1))/(y))
  132. #endif
  133.  
  134. typedef    struct fd_set {
  135.     fd_mask    fds_bits[howmany(FD_SETSIZE, NFDBITS)];
  136. } fd_set;
  137.  
  138. #define    FD_SET(n, p)    ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
  139. #define    FD_CLR(n, p)    ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
  140. #define    FD_ISSET(n, p)    ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
  141. #define FD_ZERO(p)    bzero((char *)(p), sizeof(*(p)))
  142.  
  143. #endif /* _TYPES */
  144.